package model

const (
	FieldsPathMotorVehicle       = "MotorVehicleListObject.MotorVehicleObject"
	FieldsSinglePathMotorVehicle = "MotorVehicleObject"
)

// 机动车对象特征属性
type MotorVehicle struct {
	// 车辆标识; 必选; 车辆全局唯一标识;required
	MotorVehicleID string
	// 信息分类; 必选; 人工采集还是自动采集;required
	InfoKind InfoType
	// 来源标识; 必选; 来源图像标识;required
	SourceID string
	// 关联卡口编号; 可选; 卡口编码
	TollgateID string
	// 设备编码; 特定条件下必选; 设备编码，自动采集必选
	DeviceID string
	// 近景照片; 必选; 卡口相机所拍照片，自动采集必选，图像访问路径，采用URI命名规则
	StorageUrl1 string
	// 车牌照片; 可选
	StorageUrl2 string
	// 远景照片; 可选; 全景相机所拍照片
	StorageUrl3 string
	// 合成图; 可选
	StorageUrl4 string
	// 缩略图; 可选
	StorageUrl5 string
	// 左上角X坐标; 特定条件下必选; 车的轮廓外接矩形在画面中的位置，记录左上角坐标及右下角坐标，自动采集记录时为必选
	LeftTopX int
	// 左上角Y坐标; 特定条件下必选;
	LeftTopY int
	// 右下角X坐标; 特定条件下必选;
	RightBtmX int
	// 右下角Y坐标; 特定条件下必选;
	RightBtmY int
	// 位置标记时间; 可选; 人工采集时有效
	MarkTime string
	// 车辆出现时间; 可选;
	AppearTime string
	// 车辆消失时间; 可选;
	DisappearTime string
	// 车道号; 可选; 车辆行驶方向最左车道为1，由左向右顺序编号
	LaneNo int
	// 有无车牌; 特定条件下必选;required
	HasPlate Boolean
	// 号牌种类; 特定条件下必选;required
	PlateClass PlateClassType
	// 车牌颜色; 指号牌底色，取ColorType中部分值：; 黑色，白色，黄色，蓝色，绿色;required
	PlateColor ColorType
	// 车牌号; 特定条件下必选;required
	//各类机动车号牌编号车牌全部无法识别的以“无车牌”标识，部分未识别的每个字符以半角‘-’代替
	PlateNo string
	// 挂车牌号; 可选; 各类机动车挂车号牌编号
	PlateNoAttach string
	// 车牌描述; 可选; 车牌框广告信息，包括车行名称，联系电话等
	PlateDescribe string
	// 是否套牌; 可选;
	IsDecked Boolean
	// 是否涂改; 可选;
	IsAltered Boolean
	// 是否遮挡; 可选;
	IsCovered Boolean
	// 行驶速度; 可选; 单位千米每小时（km/h）
	Speed float64
	// 行驶方向; 可选;
	Direction HDirectionType
	// 行驶状态代码; 可选;
	DrivingStatusCode string
	// 车辆使用性质代码; 可选;
	UsingPropertiesCode string
	// 车辆类型; 可选;
	VehicleClass string
	// 车辆品牌; 可选; 被标注车辆的品牌
	VehicleBrand VehicleBrandType
	// 车辆型号; 可选;
	VehicleModel string
	// 车辆年款; 可选
	VehicleStyles string
	// 车辆长度; 可选; 5位整数，单位为毫米（mm）
	VehicleLength int
	// 车辆宽度; 可选; 4位整数，单位为毫米（mm）
	VehicleWidth int
	// 车辆高度; 可选; 4位整数，单位为毫米（mm）
	VehicleHeight int
	// 车身颜色; 必选;required
	VehicleColor ColorType
	// 颜色深浅; 可选;
	VehicleColorDepth VehicleColorDepthType
	// 车前盖; 可选; 对车前盖的描述
	VehicleHood string
	// 车后盖; 可选; 对车后盖的描述
	VehicleTrunk string
	// 车轮; 可选; 对车轮的描述
	VehicleWheel string
	// 车轮印花纹; 可选;
	WheelPrintedPattern string
	// 车窗; 可选; 对车窗的描述
	VehicleWindow string
	// 车顶; 可选; 对车顶的描述
	VehicleRoof string
	// 车门; 可选; 对车门的描述
	VehicleDoor string
	// 车侧; 可选; 对车侧面的描述，不包括门
	SideOfVehicle string
	// 车厢; 可选; 对车厢的描述
	CarOfVehicle string
	// 后视镜; 可选; 对后视镜的描述
	RearviewMirror string
	// 底盘; 可选; 对车底盘的描述
	VehicleChassis string
	// 遮挡; 可选; 对车遮挡物的描述
	VehicleShielding string
	// 贴膜颜色; 可选;
	FilmColor AutoFoilColorType
	// 改装标志; 可选;
	IsModified Boolean
	// 撞痕信息; 可选;
	HitMarkInfo DentInfoType
	// 车身描述; 可选; 描述车身上的文字信息，或者车上载物信息
	VehicleBodyDesc string
	// 车前部物品; 可选; 当有多个时可用英文半角逗号分隔
	//VehicleFrontItem FrontThingType
	// 车前部物品描述; 可选; 对车前部物品数量、颜色、种类等信息的描述
	DescOfFrontItem string
	// 车后部物品; 可选; 当有多个时可用英文半角逗号分隔
	VehicleRearItem RearThingType
	// 车后部物品描述; 可选; 对车后部物品数量、颜色、种类等信息的描述
	DescOfRearItem string
	// 车内人数; 可选; 车辆内人员数量
	NumOfPassenger int
	// 经过时刻; 可选; 卡口事件有效，过车时间
	PassTime string
	// 经过道路名称; 可选; 车辆被标注时经过的道路名称
	NameOfPassedRoad string
	// 是否可疑车; 可选;
	IsSuspicious Boolean
	// 遮阳板状态; 可选; 0：收起；1：放下
	Sunvisor SunvisorType
	// 安全带状态; 可选; 0：未系；1：有系
	SafetyBelt SafetyBeltType
	// 打电话状态; 可选; 0：未打电话；1：打电话中
	Calling CallingType
	// 号牌识别可信度; 可选; 整个号牌号码的识别可信度，以0～100数值表示百分比，数值越大可信度越高
	PlateReliability string
	// 每位号牌号码可信度; 可选; 号牌号码的识别可信度，以0～100数值表示百分比，数值越大可信度越高。
	// 按“字符1-可信度1，字符2-可信度2”方式排列，中间为英文半角连接线、逗号；
	// 例如识别号牌号码为：苏B12345，则取值为：”苏-80，B-90，1-90，2-88，3-90，4-67，5-87”
	PlateCharReliability string
	// 品牌标志识别可信度; 可选; 车辆品牌标志可信度；以0～100之间数值表示百分比，数值越大可信度越高
	BrandReliability string
	// 图像列表; 可选; 可以包含0个或者多个子图像对象
	SubImageList *SubImageInfoListObject
	// 拍摄时间
	ShotTime string
	// 特征值列表
	FeatureList *FeatureInfoListObject
	// 归属分类标签标识
	TabID string
	// 国籍代码
	NationalityCode string

	//来源视图库 id
	SourceViewID string
}

func (c *MotorVehicle) GetSubImageList() *SubImageInfoListObject {
	return c.SubImageList
}

func (c *MotorVehicle) GetFeatureList() *FeatureInfoListObject {
	return c.FeatureList
}

func (c *MotorVehicle) SetFeatureList(param *FeatureInfoListObject) {
	c.FeatureList = param
}

// 批量新增机动车对象请求
type CreateMotorVehicleArrReq struct {
	MotorVehicleListObject struct {
		MotorVehicleObject []*MotorVehicle
	}
}

// 获取查询人脸对象
type GetMotorVehicleArrResp struct {
	//PageRecordNum          int
	//StartNum               int
	//TotalNum               int
	MotorVehicleListObject struct {
		MotorVehicleObject []*MotorVehicle
	}
}

type GetMotorVehicleResp struct {
	MotorVehicleObject *MotorVehicle
}
